package com.itheima.demo001;

import java.util.Random;
import java.util.Scanner;

public class exercise48 {
    public static void main(String[] args) {
        //双色球系统
        //红球：六个，1~33
        //蓝球：一个，1~16
        //1.生成中奖号码
        int[] arr = createNumber();

        System.out.println("================================");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println("================================");

        //2.用户键盘录入，彩票号码（red + blue）
        int[] userInputArr = userInputNumber();

        //3.判断用户中奖情况
        //红球的中奖个数and蓝球的中奖个数
        int redCount = 0;
        int blueCount = 0;

        //判断红球
        for (int i = 0; i < userInputArr.length - 1; i++) {
            int redNumber = userInputArr[i];
            for (int j = 0; j < arr.length - 1; j++) {
                if(redNumber == arr[j]){
                    redCount++;
                    //如果找到了，则后面的数字，没必要继续比较
                    //跳出内循环，继续判断下一个红球号码，是否中奖
                    break;
                }
            }
        }
        //判断蓝球
        int blueNumber = userInputArr[userInputArr.length - 1];
        if(blueNumber == arr[arr.length - 1]){
            blueCount++;
        }
        System.out.println(redCount);
        System.out.println(blueCount);

        //根据红球蓝球的个数，判断中奖情况
        if(redCount == 6 && blueCount == 1){
            System.out.println("恭喜你，中奖1000万");
        }else if(redCount == 6 && blueCount == 0){
            System.out.println("恭喜你，中奖500万");
        }else if(redCount == 5 && blueCount == 1){
            System.out.println("恭喜你，中奖3000元");
        }else if((redCount == 5 && blueCount == 0) || (redCount == 4 && blueCount == 1)){
            System.out.println("恭喜你，中奖200元");
        }else if((redCount == 4 && blueCount == 0) || (redCount == 3 && blueCount == 1)){
            System.out.println("恭喜你，中奖10元");
        }else if((redCount == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1) || (redCount == 0 && blueCount == 1)){
            System.out.println("恭喜你，中奖5元");
        }else{
            System.out.println("谢谢参与");
        }

    }
    public static int[] userInputNumber(){
        //1.创建数组，用于添加用户购买的彩票号码
        //6个红球，一个蓝球   数组长度：7
        int[] arr = new int[7];

        //2.利用键盘录入，让用户输入
        Scanner sc = new Scanner(System.in);
        //让用户输入红球red号码
        for (int i = 0; i < 6; ) {
            System.out.println("请输入第" + (i + 1) + "个红球号码");
            int redNumber = sc.nextInt();
            //redNumber有两个要求
            //在1~33之间   唯一不重复
            if(redNumber >= 1 && redNumber <= 33){
                boolean flag = contains(arr, redNumber);
                if(!flag){
                    //不存在
                    //有效的，可以添加到数组当中
                    arr[i] = redNumber;
                    i++;
                }else{
                    //存在
                    System.out.println("当前红球号码已经存在，请重新输入");
                }
            }else{
                System.out.println("当前红球号码，超出范围");
            }
        }
        //让用户输入蓝球blue号码
        System.out.println("请输入蓝球号码");
        //范围：1~16之间
        while (true) {
            int blueNumber = sc.nextInt();
            if(blueNumber >= 1 && blueNumber <= 16){
                arr[arr.length - 1] = blueNumber;
                break;
            }else{
                System.out.println("当前蓝球号码，超出范围");
            }
        }
        return arr;
    }
    public static int[] createNumber(){
        //1.创建数组，用于添加中奖号码
        //6个红球，一个蓝球   数组长度：7
        int[] arr = new int[7];

        //2.随机生成号码，并添加到数组当中
        //红球：1~33   不能重复
        //蓝球：1~16   可以跟红球号码重复

        //3.生成红球red号码，并添加到数组当中
        Random r = new Random();
        for (int i = 0; i < 6; ) {
            //获取红球号码,1~33
            int redNumber = r.nextInt(33) + 1;
            boolean flag = contains(arr,redNumber);
            if(!flag){
                //把红球red号码，添加到数组中
                arr[i] = redNumber;
                i++;
            }
        }
        //4.生成蓝球blue号码，并添加到数组当中
        int blueNumber = r.nextInt(16) + 1;
        arr[arr.length - 1] = blueNumber;

        //5.红球蓝球，都生成完毕，数组返回
        return arr;
    }
    //用于判断数字在数组中，是否存在
    public static boolean contains(int[] arr,int number){
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == number){
                return true;
            }
        }
        return false;
    }
}
